﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using QuanLyHocSinh.Database;
using QuanLyHocSinh.Models;

namespace QuanLyHocSinh.Controllers
{
    [Authorize]
    public class HocSinhController : BaseController
    {
        // GET: HocSinh
        [HttpGet]
        public ActionResult DanhSach()
        {
            // Đọc danh sách học sinh từ SQL
            var danhSachHocSinh = DbContext.Database.SqlQuery<DanhSachHocSinhModel>("EXEC uspLaySinhVien");
            return View(danhSachHocSinh);
        }

        [HttpGet]
        public ActionResult TaoHocSinh()
        {
            GetFormHocSinh();

            return View();
        }

        [HttpPost]
        public ActionResult TaoHocSinh(NhapHocSinhModel m)
        {
            if (m.FileAnhUpload == null)
            {
                ModelState.AddModelError("FileAnhUpload", "Chưa chọn ảnh học viên");
            }

            if (ModelState.IsValid == false)
            {
                GetFormHocSinh();
                return View(m);
            }

            // Đặt tên ảnh theo mã học viên
            m.AnhChanDung = $"{m.MaSV}.jpg";

            // Kiểm tra mã học viên có trùng không, rồi insert SQL
            var ketQua = DbContext.uspNhapHocSinh(m.MaSV.ToUpper(), m.TenSV, m.NgaySinh, m.KhoaHoc, m.GioiTinh, m.Lop, m.Nganh, m.AnhChanDung).FirstOrDefault();

            if (ketQua != null)
            {
                // Thành công,
                if (ketQua.Code == 0)
                {
                    try
                    {
                        // Lưu ảnh vào thư mục content, trả kết quả là tên file
                        m.FileAnhUpload.LuuFileAnhHocSinh(m.AnhChanDung);
                    }
                    catch (Exception)
                    {
                        // ignored
                    }

                    //  Chuyển về trang danh sách học sinh
                    return RedirectToAction("DanhSach");
                }

                // Không thành công, hiện thông báo lỗi
                ViewBag.ThongBao = ketQua.Mes;
                GetFormHocSinh();
                return View(m);
            }

            ViewBag.ThongBao = "Lỗi không xác định";
            GetFormHocSinh();
            return View(m);
        }

        [HttpGet]
        public ActionResult ChiTiet(string maSv = "")
        {
            var chiTiet = DbContext.uspChiTietSinhVien(maSv).FirstOrDefault();

            return View(chiTiet);
        }

        private void GetFormHocSinh()
        {
            // Lấy danh sách khóa học
            var khoaHoc = new List<SelectListItem>();
            foreach (var hoc in DbContext.KhoaHocs)
            {
                khoaHoc.Add(new SelectListItem { Text = hoc.TenKhoaHoc, Value = hoc.ID.ToString() });
            }
            ViewBag.KhoaHoc = khoaHoc;

            // Lấy danh sách lớp
            var danhSachLop = new List<SelectListItem>();
            foreach (var lop in DbContext.DanhSachLops)
            {
                danhSachLop.Add(new SelectListItem { Text = lop.MaLopHoc, Value = lop.MaLopHoc });
            }
            ViewBag.DsLop = danhSachLop;

            ViewBag.GioiTinh = new List<SelectListItem>
            {
                new SelectListItem {Text = "Nam", Value = "0"},
                new SelectListItem {Text = "Nữ", Value = "1"}
            };
        }
    }
}